package br.com.sixsoftware.helpdesk.persistence;

import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;

import br.com.sixsoftware.helpdesk.domain.Cliente;
import br.com.sixsoftware.helpdesk.domain.SolicitacaoServico;
import br.com.sixsoftware.helpdesk.domain.StatusServico;
import br.com.sixsoftware.helpdesk.util.BancoDadosSimulado;
import br.com.sixsoftware.helpdesk.util.SessaoUsuario;
import br.gov.frameworkdemoiselle.stereotype.PersistenceController;
import br.gov.frameworkdemoiselle.template.JPACrud;

@PersistenceController
public class SolicitacaoServicoDAO extends JPACrud<SolicitacaoServico, Long> {

	private static final long serialVersionUID = 1L;

	@Inject
	private SessaoUsuario sessaoUsuario;

	public void inserirSolicitacaoServico(SolicitacaoServico solicitacaoServico) {
		solicitacaoServico.setId(BancoDadosSimulado.sequenceIdSolicitacaoServico);
		BancoDadosSimulado.listaSolicitacaoServico.add(solicitacaoServico);
		BancoDadosSimulado.sequenceIdSolicitacaoServico++;

	}

	public List<SolicitacaoServico> listarTodosSolicitacaoServicosCliente(Cliente cliente) {
		List<SolicitacaoServico> listaSolicitacaoServicoCliente = new ArrayList<SolicitacaoServico>();
		for (SolicitacaoServico solicitacaoServicoPersistente : BancoDadosSimulado.listaSolicitacaoServico) {
			if (solicitacaoServicoPersistente.getClienteSolicitante().getId()
					.equals(sessaoUsuario.getUsuarioAtual().getId())) {
				listaSolicitacaoServicoCliente.add(solicitacaoServicoPersistente);
			}
		}
		return listaSolicitacaoServicoCliente;
	}

	public List<SolicitacaoServico> listarTodosSolicitacaoServicosPendente() {
		List<SolicitacaoServico> listaSolicitacaoServicoCliente = new ArrayList<SolicitacaoServico>();
		for (SolicitacaoServico solicitacaoServicoPersistente : BancoDadosSimulado.listaSolicitacaoServico) {
			if (solicitacaoServicoPersistente.getStatusServico().equals(StatusServico.ABERTO)
					|| solicitacaoServicoPersistente.getStatusServico().equals(StatusServico.AGUARDANDO_ATENDENTE)) {
				listaSolicitacaoServicoCliente.add(solicitacaoServicoPersistente);
			}
		}
		return listaSolicitacaoServicoCliente;
	}

	public void alterarSolicitacaoServico(SolicitacaoServico solicitacaoServico) {
		// TODO Auto-generated method stub

	}

}
